// 路径的拼接

const path = require("path");
const fs = require("fs");

// 拼接路径
const fullPath = path.join(__dirname, "subdir", "file.txt");
console.log("拼接后的路径:", fullPath); // /Users/zwx/Desktop/file/前端/node/day01/subdir/file.txt

// 获取文件名
const fileName = path.basename(fullPath);
console.log("文件名:", fileName); // file.txt

// 获取目录名
const dirName = path.dirname(fullPath);
console.log("目录名:", dirName); // /Users/zwx/Desktop/file/前端/node/day01/subdir

// 获取文件扩展名
const extName = path.extname(fullPath);
console.log("文件扩展名:", extName); // .txt

// 解析路径
const parsedPath = path.parse(fullPath);
console.log("解析后的路径对象:", parsedPath);
/**
 * {
  root: '/',
  dir: '/Users/zwx/Desktop/file/前端/node/day01/subdir',
  base: 'file.txt',
  ext: '.txt',
  name: 'file'
}
 */

// 格式化路径对象为字符串
const formattedPath = path.format(parsedPath);
console.log("格式化后的路径字符串:", formattedPath);

// 判断是否为绝对路径
const isAbsolutePath = path.isAbsolute(fullPath);
console.log("是否为绝对路径:", isAbsolutePath);

// 计算相对路径
const relativePath = path.relative(__dirname, fullPath);
console.log("相对路径:", relativePath);

const resolvedPath = path.resolve(__dirname, "subdir", "file.txt");
console.log("解析后的绝对路径:", resolvedPath);
// 注意: subdir 是目录, 向file.txt写入内容时,若subdir没有被创建,会报错
// 那么这个问题该如何解决呢? 需要先创建subdir目录,再写入文件
// 创建目录, 如果目录已存在,则不创建 recursive: true
fs.mkdir(path.dirname(resolvedPath), { recursive: true }, (err) => {
  if (err) {
    console.error("创建目录出错:", err);
    return;
  }
  console.log("目录已创建或已存在");
});
fs.writeFile(resolvedPath, "Hello, Path!", (err) => {
  if (err) {
    console.error("写入文件出错:", err);
    return;
  }
  console.log("文件已写入到:", resolvedPath);
});